package dominio

import org.eclipse.xtext.xbase.lib.Exceptions
import org.uqbar.commons.model.Entity
import org.uqbar.commons.utils.Observable

@Observable
class Planta extends Entity implements Cloneable {
	@Property Integer puntosDanio
	@Property Integer capacidadDefensiva
	@Property String tipo
	@Property String nombre
	@Property String descripcion

	//@Property Zombie zombieAtacante
	@Property Integer puntosMejora

	/*new(){
		puntosDanio = 50
		capacidadDefensiva = 60
		tipo = "tierra"
		nombre = "Planta Tierra"
	}*/
	//def setPuntosDanio(Integer valor){
	//	if(valor<0 || valor>100){
	//	throw new UserException("El rango es 0-100")
	//} else {
	//_puntosDanio = valor}
	//}
	//	def setCapacidadDefensiva(Integer valor){
	//	if(valor<1 || valor>50){
	//	throw new UserException("El rango es 1-50")
	//} else {
	//_capacidadDefensiva = valor}
	//}
	override def toString() {
		getDescripcionEntera
	}

	def getDescripcionEntera() {
		getNombre + " Atk: " + getPuntosDanio + " Vida: " + getCapacidadDefensiva
	}

	def void teAtaca(Zombie zombieAtacante) {
		capacidadDefensiva = getCapacidadDefensiva - zombieAtacante.potencia
		zombieAtacante.teAtaco(this)
	}

	def aumentaTuPoder() {
		puntosDanio = getPuntosDanio + getPuntosMejora
	}

	def aumentaTuDefensa() {
		capacidadDefensiva = getCapacidadDefensiva + getPuntosMejora
	}

	def boolean vive() {
		getCapacidadDefensiva > 0
	}

	override Object clone() {
		try {
			return super.clone()
		} catch (Throwable _e) {
			throw Exceptions.sneakyThrow(_e)
		}
	}
/*def Planta clonar(){
  		Planta clon = new 
  	}*/
}
